#ifndef __arena_base_h__
#define __arena_base_h__

#include <string>
#include <vector>
#include <fstream>
#include <sstream>

#include <boost/bind.hpp>
#include <boost/function.hpp>

#include "objects.h"

using namespace std;

class Arena_base
{
public:
  virtual void update(float time) = 0;

  float get_time(void);

  bool failure(void);

  virtual void reset(void);

  void print_state_to_file(void);

  Objects *objects;

  void info(stringstream &ss);

protected:
  Arena_base();
  virtual ~Arena_base();

  bool _failure;

  float _time;

private:
  ofstream *_logfile;

  virtual string get_state(void);

  virtual void update_arena(void);
};

#endif
